The present invention relates to industrial controllers for controlling industrial processes according to a control program, and in particular to a novel method of coordinating memory assigned to both input/output devices of the controller and variables of the control program.
Industrial controllers are special purpose computers used in controlling industrial processes or manufacturing equipment. Under the direction of a stored control program, the industrial controller examines a series of electrical inputs reflecting the status of the controlled process and changes electrical outputs affecting control of the process. The inputs and outputs may most simply be binary, that is, "on" or "off", however, analog inputs and outputs taking on a continuous range of values are also used.
The various components of the industrial controller may be spatially distributed about a factory or manufacturing facility to be interconnected by one or more communication links. A number of different communication links are commonly used in industrial controllers including proprietary links defined and used by a particular manufacturer and open links such as ControlNet, DeviceNet, and EtherNet whose specifications are published and may be used broadly by a number of manufacturers and suppliers. In such architectures, normally there is a central processor connected with one or more remote input and output modules (I/O devices) connected directly to the controlled process or machine.
The central processor may have in electronic memory an I/O table that receives input data from the I/O devices and stores it at particular addresses in the I/O table and writes output data from the I/O table to the particular I/O devices. This transfer of data between the I/O devices and the I/O table is normally performed by circuitry independent of the processor executing the controlled program. Thus, the processor executing the control program may simply write to or read from the I/O table in order to obtain data relevant to the controlled process. The data is asynchronously refreshed without processor overhead.
It follows from this, that unlike normal computer programs, variables used by the control program cannot be arbitrarily located in memory but need-to be matched with the corresponding I/O table entries. In this way the data of the variables will match the current data of the inputs or outputs on the control devices to which they relate.
In the prior art, this linkage between variables in the control program and data from physical devices was obtained by establishing a fixed relationship between physical devices (or their addresses) and portions of the I/O table. Within the control program, logical names for the variables were restricted to descriptions of the addresses of the physical devices so as to be easily mapped to the corresponding portion of the I/O table. For example, a variable within the control program might be designated by the logical name: RACK 1 SLOT 1, indicating an address for an I/O device denoted by a physical location on a remote I/O rack and a slot within that rack into which the I/O device was inserted.
While this approach is relatively simple it is also inflexible. It requires all future physical devices (that might be connected to the industrial controller) to conform to a predefined physical device space that is pre-mapped to the I/O table. This pre-mapping fixes the amount and structure of the data exchanged with the physical device in a way that may not be appropriate for the requirements of the physical device. The use of logical variable names describing physical device addresses is awkward and non-intuitive for modem programmers. If devices are not present at a particular physical addresses, I/O table space is wasted.